package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootReward;
import org.footballmanager.pandafootball.system.form.impl.FootRewardSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;

public interface FootRewardService extends BaseService<FootReward> {
    /**
     * 查询
     *
     * @param entityname          实体类名
     * @param map                 参数
     * @param footRewardSearchForm 条件
     */
    void search(String entityname, Model map, FootRewardSearchForm footRewardSearchForm);

    /**
     * 删除所有
     *
     * @param footRewardSearchForm 条件
     * @param request             请求
     */
    void deleteAll(FootRewardSearchForm footRewardSearchForm, HttpServletRequest request);

    /**
     * 翻页查询
     * @param footRewardSearchForm 条件
     * @return 抽奖记录列表
     */
    List<FootReward> findall(FootRewardSearchForm footRewardSearchForm);

    /**
     * 根据主键查询记录
     * @param id 抽奖记录主键
     * @return 抽奖记录
     */
    FootReward get(Serializable id);

    /**
     * 根据用户查找抽奖信息
     * @param userId 用户主键
     * @return 抽奖信息
     */
    FootReward findByUserId(Long userId);

    /**
     * 保存新的抽奖记录设置
     * @param userId 用户主键
     * @param request 请求
     */
    void saveNewReward(Long userId, HttpServletRequest request);

    /**
     * 根据用户主键及类型更新数据
     * @param userId 用户主键
     * @param type 类型
     * @param request 请求
     */
    void updateTimesByType(Long userId, int type, HttpServletRequest request);

    /**
     * 重置抽奖次数
     */
    void clearRewardFree();
}